<?php

require_once("../Codes/fonctionsPHP.php");

function verifierNiveau( $bdd , $niveau )
{
	if(is_numeric( $niveau ) )
	{
		return true;
	}
	return false;
	echo '<br />Niveau non valable.';
}
function verifierChapitre( $bdd , $idChapitre )
{
	if(is_numeric( $idChapitre ) )
	{
		$bdd = ouvrirBase();
							
		$compte = $bdd->prepare('SELECT COUNT(*) FROM dil_chapitres WHERE dil_chapitres.id = :chapitre ');
		$compte->bindValue('chapitre', $idChapitre, PDO::PARAM_INT);
		$compte->execute();
		$existe = $compte->fetch();
		if($existe['COUNT(*)']<1)
		{
			echo '<div id="notification">
			Chapitre manquant
			</div>';
		}
		else if($idChapitre>=0)
		{
			return true;
		}
	}
	echo '<br />Chapitre non valable.';
	return false;
}

function verifierHistoire( $bdd , $idHistoire )
{
	if(is_numeric( $idHistoire ) )
	{
		$bdd = ouvrirBase();
							
		$compte = $bdd->prepare('SELECT COUNT(*)
									 FROM dil_histoires WHERE id = :histoire ');
									 
		$compte->bindValue('histoire', $idHistoire, PDO::PARAM_INT);
		$compte->execute();
		$existe = $compte->fetch();
		if($existe['COUNT(*)']<1)
		{
			echo '<div id="notification">
			Histoire manquante
		</div>';
		}
		else
		{
			return true;
		}
	}
	echo '<br />Histoire non valable.';
	return false;
}

//verifie si la personne passee en entree est bien moderateur de cet univers
function verifierModerateurUnivers($bdd, $nomUnivers, $nomModerateur)
{
	$req = $bdd->prepare('SELECT COUNT(*) FROM dil_moderation WHERE univers = :univers AND moderateur = :pseudo');
	$req->bindValue('univers', $nomUnivers, PDO::PARAM_STR);
	$req->bindValue('pseudo', $nomModerateur, PDO::PARAM_INT);
	$req->execute();
	$donnees = $req->fetch();
	if($donnees['COUNT(*)'] == 1 || $_SESSION["statut"] == "administrateur" )
	{
		return true;
	}
	else{
		return false;
	}
}	

function verifierAuteurChapitre( $bdd , $idChapitre )
{
	$req = $bdd->prepare('SELECT * FROM dil_chapitres WHERE id = :id ');
	$req->bindValue('id', $idChapitre, PDO::PARAM_STR);
	$req->execute();
	
	$donnees = $req->fetch();
	
	if( verifierAuteurHistoire( $bdd , $donnees['idHistoire'] ) )
	{
		return true;
	}
	else
	{
		return false;
	}
}

function verifierAuteurHistoire( $bdd , $idHistoire )
{
	$req = $bdd->prepare('SELECT pseudoAuteur, nomUnivers FROM dil_histoires WHERE dil_histoires.id = :histoire');
	$req->bindValue('histoire', $idHistoire, PDO::PARAM_INT);
	$req->execute();
		
	$donnees = $req->fetch();
	
	$autorisation = false;
				
	if( isset( $_SESSION['nom'] ) )
	{
		$req2 = $bdd->prepare('SELECT COUNT(*) FROM dil_moderation WHERE univers = :univers AND moderateur = :pseudo' ) ;
		$req2->bindValue('univers', $donnees['nomUnivers'], PDO::PARAM_INT);
		$req2->bindValue('pseudo', $_SESSION['nom'], PDO::PARAM_STR);
		$req2->execute();
		$result = $req2->fetch();
		
		if($result['COUNT(*)']>0)
		{
			$autorisation = true;
		}
	}

	if( isset( $_SESSION['nom'] ) && ( $donnees['pseudoAuteur'] == $_SESSION['nom'] || $_SESSION['statut'] == "administrateur" || ( $autorisation && $_SESSION['statut'] == "moderateur" ) ) )
	{
		return true;
	}
	return false;
}

function verifierEstAuteur( $bdd , $auteur )
{
	$req = $bdd->prepare('SELECT COUNT(*) 
							 FROM dil_comptes WHERE pseudo = :pseudo ');
	$req->bindValue('pseudo', $auteur, PDO::PARAM_STR);
	$req->execute();
	$donnees = $req->fetch();

	if($donnees['COUNT(*)']>0 )
	{
		return true;
	}
	return false;
}



function verifierAuteur( $bdd )
{
	if( isset( $_SESSION['nom'] ) && verifierEstAuteur( $bdd , $_SESSION['nom'] ) )
	{
		return true;
	}
	
	return false;
}

function verifierPageChapitre( $bdd , $type )
{
	if( isset($_POST['titre'], $_POST['corpsText'] ) && ( $type == 2 || isset( $_POST['corpsChoix1'], $_POST['corpsChoix2'], $_POST['corpsChoix3'] ) ) )
	{
		if( strlen( $_POST['titre'] ) > 0 && strlen( $_POST['corpsText'] ) > 0 && ( $type == 2 || ( strlen( $_POST['corpsChoix1'] ) > 0 && strlen( $_POST['corpsChoix2'] ) > 0 ) ) )
		{
			if( $type == 1 )
			{
				$_POST['corpsChoix1'] = securite_chaine($_POST['corpsChoix1']);
				$_POST['corpsChoix2'] = securite_chaine($_POST['corpsChoix2']);
				$_POST['corpsChoix3'] = securite_chaine($_POST['corpsChoix3']);
			}

			$_POST['corpsText'] = securite_chaine($_POST['corpsText']);
			$_POST['titre'] = securite_chaine($_POST['titre']);
		
			return true;
		}
		echo '<br />Taille des champs insuffisantes.';
	}
	
	return false;
}

function verifierHistoireNiveau( $bdd , $histoire , $niveau )
{
	if( verifierHistoire( $bdd , $histoire ) && verifierNiveau( $bdd , $niveau ) )
	{
		$req = $bdd->prepare('SELECT COUNT(*) 
								 FROM dil_histoires WHERE id = :histoire AND niveau >= :niveau');
		$req->bindValue('histoire', $histoire, PDO::PARAM_INT);
		$req->bindValue('niveau', $niveau, PDO::PARAM_INT);
		$req->execute();
		$donneesHist = $req->fetch();

		if($donneesHist['COUNT(*)']>0 )
		{
			return true;
		}
		else
		{
			echo "<br />Mauvaise correspondance entre l'histoire et le niveau.";
		}
	}
	echo '<br />Probleme d\'arguments.';
	return false;
}

function concordancePrecChoix( $bdd , $chapPrec , $choix )
{
	$req = $bdd->prepare('SELECT *
							 FROM dil_chapitres WHERE id = :chapitre ');
	$req->bindValue('chapitre', $chapPrec, PDO::PARAM_INT);
	$req->execute();
	$donnees = $req->fetch();
	
	if( $choix == 1 || $choix == 2 || $choix == 3 )
	{
		if( $donnees["idPageChoix" . $choix] == -1 )
		{
			return true;
		}
	}
	return false;
}

function verifierHistPrec( $bdd , $histoire , $chapPrec )
{
	if( verifierChapitre( $bdd , $chapPrec ) && verifierHistoire( $bdd , $histoire ) )
	{
		$req = $bdd->prepare('SELECT COUNT(*) 
								 FROM dil_chapitres WHERE id = :chapitre AND idHistoire = :histoire ');
		$req->bindValue('chapitre', $chapPrec, PDO::PARAM_INT);
		$req->bindValue('histoire', $histoire, PDO::PARAM_INT);
		$req->execute();
		$donneesChap2 = $req->fetch();

		if( $donneesChap2['COUNT(*)']>0 )
		{
			return true;
		}
	}
	return false;
}

function verifierChapHistPrec( $bdd , $chapitre , $histoire , $chapPrec )
{
	if( $chapitre == -1 && $chapPrec != -1 )
	{
		if( verifierChapitre( $bdd , $chapPrec ) && verifierHistoire( $bdd , $histoire ) )
		{
			$req = $bdd->prepare('SELECT COUNT(*) 
									 FROM dil_chapitres WHERE id = :chapitre AND idHistoire = :histoire ');
			$req->bindValue('chapitre', $chapPrec, PDO::PARAM_INT);
			$req->bindValue('histoire', $histoire, PDO::PARAM_INT);
			$req->execute();
			$donneesChap2 = $req->fetch();

			if( $donneesChap2['COUNT(*)']>0 )
			{
				return true;
			}
		}
	}
	else if( $chapPrec == -1 && $chapitre != -1 )
	{
		if( verifierChapitre( $bdd , $chapitre ) && verifierHistoire( $bdd , $histoire ) )
		{
			$req = $bdd->prepare('SELECT COUNT(*) 
								 FROM dil_chapitres WHERE id = :chapitre AND idHistoire = :histoire ');
			$req->bindValue('chapitre', $chapitre, PDO::PARAM_INT);
			$req->bindValue('histoire', $histoire, PDO::PARAM_INT);
			$req->execute();
			$donneesChap1 = $req->fetch();

			if( $donneesChap1['COUNT(*)']>0 )
			{
				return true;
			}
		}
	}
	else if( verifierChapitre( $bdd , $chapPrec ) && verifierChapitre( $bdd , $chapitre ) && verifierHistoire( $bdd , $histoire ) )
	{
		$req = $bdd->prepare('SELECT COUNT(*) 
								 FROM dil_chapitres WHERE id = :chapitre AND idHistoire = :histoire ');
		$req->bindValue('chapitre', $chapitre, PDO::PARAM_INT);
		$req->bindValue('histoire', $histoire, PDO::PARAM_INT);
		$req->execute();
		$donneesChap1 = $req->fetch();
		
		$req->bindValue('chapitre', $chapPrec, PDO::PARAM_INT);
		$req->bindValue('histoire', $histoire, PDO::PARAM_INT);
		$req->execute();
		$donneesChap2 = $req->fetch();

		if( $donneesChap1['COUNT(*)']>0 && $donneesChap2['COUNT(*)']>0 )
		{
			return true;
		}
	}

	echo "<br />Mauvaise correspondance entre l'histoire, le chapitre.";

	return false;
}
?>
